Tailwind CSSμ Functions APIλ₯Ό μ¬λ μκ² μμλ³΄κ³ , 컀μ€ν μ νΈλ¦¬ν° ν΄λμ€, ν λ§, λ³νμ μμ±νμ¬ λμμΈμ μμ μμ¬λ‘ λ§μΆ€ μ€μ νλ λ°©λ²μ λ°°μ보μΈμ. Tailwind κΈ°μ μ ν λ¨κ³ λμ΄μ¬λ € λ μ°½μ μΈ μ¬μ©μ μΈν°νμ΄μ€λ₯Ό ꡬμΆνμΈμ.
Tailwind CSS λ§μ€ν°νκΈ°: Functions APIλ₯Ό νμ©ν 컀μ€ν μ νΈλ¦¬ν° μμ±μ ν
Tailwind CSSλ μ νΈλ¦¬ν° μ°μ μ κ·Ό λ°©μμΌλ‘ νλ‘ νΈμλ κ°λ°μ νλͺ μ μΌμΌμΌ°μ΅λλ€. 미리 μ μλ ν΄λμ€λ₯Ό ν΅ν΄ κ°λ°μλ μ¬μ©μ μΈν°νμ΄μ€λ₯Ό μ μνκ² νλ‘ν νμ΄ννκ³ μΌκ΄μ± μκ² κ΅¬μΆν μ μμ΅λλ€. νμ§λ§ λλ‘λ κΈ°λ³Έ μ νΈλ¦¬ν° μΈνΈλ§μΌλ‘λ μΆ©λΆνμ§ μμ΅λλ€. λ°λ‘ μ΄ μ§μ μμ Tailwind CSS Functions APIκ° λ±μ₯νμ¬, Tailwindμ κΈ°λ₯μ νμ₯νκ³ νΉμ νλ‘μ νΈ μꡬμ λ§λ 컀μ€ν μ νΈλ¦¬ν° ν΄λμ€λ₯Ό μμ±νλ κ°λ ₯ν λ°©λ²μ μ 곡ν©λλ€.
Tailwind CSS Functions APIλ 무μμΈκ°?
Functions APIλ Tailwind CSSκ° μ 곡νλ μλ°μ€ν¬λ¦½νΈ ν¨μ μΈνΈλ‘, νλ‘κ·Έλλ° λ°©μμΌλ‘ Tailwindμ μ€μ κ³Ό μνΈ μμ©νκ³ μ»€μ€ν CSSλ₯Ό μμ±ν μ μκ² ν΄μ€λλ€. μ΄λ₯Ό ν΅ν΄ λ€μκ³Ό κ°μ 무νν κ°λ₯μ±μ΄ μ΄λ¦½λλ€:
- μμ ν μλ‘μ΄ μ νΈλ¦¬ν° ν΄λμ€ μμ±.
- κΈ°μ‘΄ Tailwind ν λ§λ₯Ό 컀μ€ν κ°μΌλ‘ νμ₯.
- 컀μ€ν μ νΈλ¦¬ν°λ₯Ό μν λ³ν(variants) μμ±.
- μ¬μ¬μ© κ°λ₯ν μ»΄ν¬λνΈλ‘ κ°λ ₯ν λμμΈ μμ€ν ꡬμΆ.
λ³Έμ§μ μΌλ‘ Functions APIλ Tailwind CSSλ₯Ό μ¬μ©μμ μ νν μꡬ μ¬νμ λ§κ² μ‘°μ νλ λ° νμν λꡬλ₯Ό μ 곡νμ¬, λ΄μ₯λ μ νΈλ¦¬ν°λ₯Ό λμ΄ μ§μ μΌλ‘ λ μ°½μ μ΄κ³ λ§μΆ€νλ μ€νμΌλ§ μ루μ μ λ§λ€ μ μκ² ν©λλ€.
Tailwind CSS APIμ μ£Όμ ν¨μ
Functions APIμ ν΅μ¬μ Tailwind μ€μ νμΌ(tailwind.config.js
λλ tailwind.config.ts
) λ΄μμ κ·Έλ¦¬κ³ @tailwindcss/plugin
μ μ¬μ©νμ¬ μμ±λ 컀μ€ν
νλ¬κ·ΈμΈ λ΄μμ μ κ·Όν μ μλ λͺ κ°μ§ μ£Όμ ν¨μλ₯Ό μ€μ¬μΌλ‘ μ΄λ£¨μ΄μ§λλ€.
theme(path, defaultValue)
theme()
ν¨μλ₯Ό μ¬μ©νλ©΄ Tailwind ν
λ§ μ€μ μ μ μλ κ°μ μ κ·Όν μ μμ΅λλ€. μ¬κΈ°μλ μμκ³Ό κ°κ²©λΆν° κΈκΌ΄ ν¬κΈ°, μ€λ¨μ (breakpoints)κΉμ§ λͺ¨λ κ²μ΄ ν¬ν¨λ©λλ€. νλ‘μ νΈμ λμμΈ μΈμ΄μ μΌκ΄λ μ νΈλ¦¬ν°λ₯Ό λ§λλ λ° λ§€μ° μ€μν©λλ€.
μμ: ν λ§μμ 컀μ€ν μμ μ κ·ΌνκΈ°:
module.exports = {
theme: {
extend: {
colors: {
'brand-primary': '#007bff',
},
},
},
plugins: [
function ({ addUtilities, theme }) {
const newUtilities = {
'.bg-brand-primary': {
backgroundColor: theme('colors.brand-primary'),
},
};
addUtilities(newUtilities);
},
],
};
μ΄ μμλ brand-primary
μ μ μλ ν₯μ€ μ½λλ₯Ό κ°μ Έμ .bg-brand-primary
μ νΈλ¦¬ν° ν΄λμ€λ₯Ό μμ±νμ¬ λΈλλ μμμ λ°°κ²½μΌλ‘ μ½κ² μ μ©ν μ μλλ‘ ν©λλ€.
addUtilities(utilities, variants)
addUtilities()
ν¨μλ 컀μ€ν
μ νΈλ¦¬ν° μμ±μ ν΅μ¬μ
λλ€. Tailwindμ μ€νμΌμνΈμ μλ‘μ΄ CSS κ·μΉμ μ£Όμ
ν μ μκ² ν΄μ€λλ€. utilities
μΈμλ κ°μ²΄λ‘, ν€λ μμ±νλ €λ ν΄λμ€ μ΄λ¦μ΄κ³ κ°μ ν΄λΉ ν΄λμ€κ° μ¬μ©λ λ μ μ©λμ΄μΌ ν CSS μμ± λ° κ°μ
λλ€.
μ νμ variants
μΈμλ₯Ό μ¬μ©νλ©΄ 컀μ€ν
μ νΈλ¦¬ν°μ λν΄ μμ±λμ΄μΌ ν λ°μν μ€λ¨μ λ° μμ¬ ν΄λμ€(μ: hover
, focus
)λ₯Ό μ§μ ν μ μμ΅λλ€. λ³νμ΄ μ§μ λμ§ μμΌλ©΄ μ νΈλ¦¬ν°λ κΈ°λ³Έ(base) μνμ λν΄μλ§ μμ±λ©λλ€.
μμ: ν μ€νΈ μ€λ²νλ‘μ°λ₯Ό μλ΅ λΆνΈλ‘ μ€μ νλ μ νΈλ¦¬ν° μμ±νκΈ°:
module.exports = {
plugins: [
function ({ addUtilities }) {
const newUtilities = {
'.truncate-multiline': {
overflow: 'hidden',
display: '-webkit-box',
'-webkit-line-clamp': '3',
'-webkit-box-orient': 'vertical',
},
};
addUtilities(newUtilities);
},
],
};
μ΄ μ½λλ ν
μ€νΈλ₯Ό μΈ μ€λ‘ μλ₯΄κ³ , ν
μ€νΈκ° κ·Έ νλλ₯Ό μ΄κ³Όνλ©΄ μλ΅ λΆνΈλ₯Ό μΆκ°νλ .truncate-multiline
ν΄λμ€λ₯Ό μμ±ν©λλ€.
addComponents(components)
addUtilities
κ° μ μμ€μ λ¨μΌ λͺ©μ ν΄λμ€λ₯Ό μν κ²μ΄λΌλ©΄, addComponents
λ λ 볡μ‘ν UI μμλ μ»΄ν¬λνΈ μ€νμΌλ§μ μν΄ μ€κ³λμμ΅λλ€. μ¬μ¬μ© κ°λ₯ν μ»΄ν¬λνΈ μ€νμΌμ λ§λλ λ° νΉν μ μ©ν©λλ€.
μμ: λ²νΌ μ»΄ν¬λνΈ μ€νμΌλ§νκΈ°:
module.exports = {
plugins: [
function ({ addComponents, theme }) {
const buttons = {
'.btn': {
padding: `${theme('spacing.2')} ${theme('spacing.4')}`,
borderRadius: theme('borderRadius.md'),
fontWeight: theme('fontWeight.semibold'),
backgroundColor: theme('colors.blue.500'),
color: theme('colors.white'),
'&:hover': {
backgroundColor: theme('colors.blue.700'),
},
},
};
addComponents(buttons);
},
],
};
μ΄ μ½λλ ν¨λ©, ν
λ리 λ°κ²½, κΈκΌ΄ λκ» λ° μμμ λν μ¬μ μ μλ μ€νμΌλ§μ ν¬ν¨νλ .btn
ν΄λμ€λ₯Ό μμ±νλ©°, νΈλ² ν¨κ³Όλ ν¬ν¨ν©λλ€. μ΄λ μ ν리μΌμ΄μ
μ λ°μ κ±Έμ³ μ¬μ¬μ©μ±κ³Ό μΌκ΄μ±μ μ¦μ§μν΅λλ€.
addBase(baseStyles)
addBase
ν¨μλ Tailwindμ μ€νμΌμνΈμ κΈ°λ³Έ μ€νμΌμ μ£Όμ
νλ λ° μ¬μ©λ©λλ€. μ΄λ¬ν μ€νμΌμ Tailwindμ μ νΈλ¦¬ν° ν΄λμ€λ³΄λ€ λ¨Όμ μ μ©λλ―λ‘ HTML μμμ λν κΈ°λ³Έ μ€νμΌμ μ€μ νκ±°λ μ μ 리μ
μ μ μ©νλ λ° μ μ©ν©λλ€.
μμ: μ μ box-sizing 리μ μ μ©νκΈ°:
module.exports = {
plugins: [
function ({ addBase }) {
const baseStyles = {
'*, ::before, ::after': {
boxSizing: 'border-box',
},
};
addBase(baseStyles);
},
],
};
addVariants(name, variants)
addVariants
ν¨μλ₯Ό μ¬μ©νλ©΄ κΈ°μ‘΄ λλ 컀μ€ν
μ νΈλ¦¬ν°μ μ μ©ν μ μλ μλ‘μ΄ λ³νμ μ μν μ μμ΅λλ€. λ³νμ μ¬μ©νλ©΄ hover, focus, active, disabled λλ λ°μν μ€λ¨μ κ³Ό κ°μ λ€μν μνμ λ°λΌ μ€νμΌμ μ μ©ν μ μμ΅λλ€. μ΄λ λμ μ΄κ³ μνΈμμ©μ μΈ μ¬μ©μ μΈν°νμ΄μ€λ₯Ό λ§λλ κ°λ ₯ν λ°©λ²μ
λλ€.
μμ: μμ κ°μμ±μ μ μ΄νκΈ° μν `visible` λ³ν μμ±νκΈ°:
module.exports = {
plugins: [
function ({ addUtilities, addVariants }) {
const newUtilities = {
'.visible': {
visibility: 'visible',
},
'.invisible': {
visibility: 'hidden',
},
};
addUtilities(newUtilities);
addVariants('visible', ['hover', 'focus']);
},
],
};
μ΄ μ½λλ .visible
λ° .invisible
μ νΈλ¦¬ν°λ₯Ό μμ±ν λ€μ visible
μ νΈλ¦¬ν°μ λν hover
λ° focus
λ³νμ μ μνμ¬ hover:visible
λ° focus:visible
κ³Ό κ°μ ν΄λμ€λ₯Ό μμ±ν©λλ€.
컀μ€ν μ νΈλ¦¬ν° μμ±μ μ€μ©μ μΈ μμ
Functions APIλ₯Ό νμ©νμ¬ λ€μν μ¬μ© μ¬λ‘μ λ§λ 컀μ€ν μ νΈλ¦¬ν° ν΄λμ€λ₯Ό μμ±νλ λͺ κ°μ§ μ€μ©μ μΈ μμλ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€.
1. 컀μ€ν κΈκΌ΄ ν¬κΈ° μ νΈλ¦¬ν° μμ±νκΈ°
Tailwindμ κΈ°λ³Έ κΈκΌ΄ ν¬κΈ° μ€μΌμΌμ ν¬ν¨λμ§ μμ κΈκΌ΄ ν¬κΈ°κ° νμνλ€κ³ μμν΄λ³΄μΈμ. Functions APIλ₯Ό μ¬μ©νμ¬ μ½κ² μΆκ°ν μ μμ΅λλ€.
module.exports = {
theme: {
extend: {
fontSize: {
'7xl': '5rem',
},
},
},
plugins: [
function ({ addUtilities, theme }) {
const newUtilities = {
'.text-7xl': {
fontSize: theme('fontSize.7xl'),
},
};
addUtilities(newUtilities);
},
],
};
μ΄ μ½λλ κΈκΌ΄ ν¬κΈ°λ₯Ό 5rem
μΌλ‘ μ€μ νλ text-7xl
μ νΈλ¦¬ν° ν΄λμ€λ₯Ό μΆκ°ν©λλ€.
2. λ°μν κ°κ²© μ νΈλ¦¬ν° μμ±νκΈ°
νλ©΄ ν¬κΈ°μ λ°λΌ μλμΌλ‘ μ‘°μ λλ λ°μν κ°κ²© μ νΈλ¦¬ν°λ₯Ό λ§λ€ μ μμ΅λλ€. μ΄λ λ€μν μ₯μΉμ μ μνλ λ μ΄μμμ λ§λλ λ° νΉν μ μ©ν©λλ€.
module.exports = {
theme: {
extend: {
spacing: {
'72': '18rem',
'84': '21rem',
'96': '24rem',
},
},
},
plugins: [
function ({ addUtilities, theme, variants }) {
const spacing = theme('spacing');
const newUtilities = Object.entries(spacing).reduce((acc, [key, value]) => {
acc[`.my-${key}`] = {
marginTop: value,
marginBottom: value,
};
return acc;
}, {});
addUtilities(newUtilities, variants('margin'));
},
],
};
μ΄ μμλ ν
λ§μ μ μλ λͺ¨λ κ°κ²© κ°μ λν΄ .my-*
μ νΈλ¦¬ν°λ₯Ό μμ±νκ³ , λ§μ§μ λν λ³νμ νμ±ννμ¬ md:my-8
κ³Ό κ°μ λ°μν λ³νμ νμ©ν©λλ€.
3. 컀μ€ν κ·ΈλΌλ°μ΄μ μ νΈλ¦¬ν° μμ±νκΈ°
κ·ΈλΌλ°μ΄μ μ λμμΈμ μκ°μ λ§€λ ₯μ λν μ μμ΅λλ€. Functions APIλ₯Ό μ¬μ©νμ¬ μ»€μ€ν κ·ΈλΌλ°μ΄μ μ νΈλ¦¬ν°λ₯Ό λ§λ€ μ μμ΅λλ€.
module.exports = {
theme: {
extend: {
gradientColorStops: {
'brand-primary': '#007bff',
'brand-secondary': '#6610f2',
},
},
},
plugins: [
function ({ addUtilities, theme }) {
const newUtilities = {
'.bg-gradient-brand': {
background: `linear-gradient(to right, ${theme('gradientColorStops.brand-primary')}, ${theme('gradientColorStops.brand-secondary')})`,
},
};
addUtilities(newUtilities);
},
],
};
μ΄ μ½λλ 컀μ€ν
λΈλλ μμμ μ¬μ©νμ¬ μ ν κ·ΈλΌλ°μ΄μ
μ μ μ©νλ .bg-gradient-brand
ν΄λμ€λ₯Ό μμ±ν©λλ€.
4. 컀μ€ν λ°μ€ μλμ° μ νΈλ¦¬ν°
νΉμ λ°μ€ μλμ° μ€νμΌμ Functions APIλ₯Ό μ¬μ©νμ¬ μ½κ² λ§λ€ μ μμ΅λλ€. μ΄λ μΌκ΄λ λͺ¨μκ³Ό λλμ΄ νμν λμμΈ μμ€ν μ νΉν μ μ©ν©λλ€.
module.exports = {
theme: {
extend: {
boxShadow: {
'custom-shadow': '0 4px 12px rgba(0, 0, 0, 0.15)',
},
},
},
plugins: [
function ({ addUtilities, theme }) {
const newUtilities = {
'.shadow-custom': {
boxShadow: theme('boxShadow.custom-shadow'),
},
};
addUtilities(newUtilities);
},
],
};
μ΄ μ½λλ μ§μ λ 컀μ€ν
λ°μ€ μλμ°λ₯Ό μ μ©νλ .shadow-custom
ν΄λμ€λ₯Ό μΆκ°ν©λλ€.
Functions API μ¬μ©μ μν λͺ¨λ² μ¬λ‘
Functions APIλ λλΌμ΄ μ μ°μ±μ μ 곡νμ§λ§, κΉ¨λνκ³ μ μ§λ³΄μ κ°λ₯ν μ½λλ² μ΄μ€λ₯Ό μ μ§νκΈ° μν΄ λͺ¨λ² μ¬λ‘λ₯Ό λ°λ₯΄λ κ²μ΄ μ€μν©λλ€:
- μ€μ νμΌμ 체κ³μ μΌλ‘ κ΄λ¦¬νμΈμ: νλ‘μ νΈκ° 컀μ§μ λ°λΌ
tailwind.config.js
νμΌμ΄ ν¬κ³ λ€λ£¨κΈ° νλ€μ΄μ§ μ μμ΅λλ€. μ£Όμμ μ¬μ©νκ³ , νμ₯μ λ Όλ¦¬μ μΌλ‘ ꡬμ±νλ©°, νμν κ²½μ° μ€μ μ μ¬λ¬ νμΌλ‘ λΆλ¦¬νλ κ²μ κ³ λ €νμΈμ. - μ€λͺ μ μΈ ν΄λμ€ μ΄λ¦μ μ¬μ©νμΈμ: μ νΈλ¦¬ν°μ λͺ©μ μ λͺ ννκ² λνλ΄λ ν΄λμ€ μ΄λ¦μ μ ννμΈμ. μ΄λ μ½λλ₯Ό μ΄ν΄νκ³ μ μ§λ³΄μνκΈ° μ½κ² λ§λλλ€.
- ν λ§ μ€μ μ νμ©νμΈμ: κ°λ₯ν ν ν λ§ μ€μ μ μ μλ κ°μ μ¬μ©νμ¬ νλ‘μ νΈ μ λ°μ μΌκ΄μ±μ 보μ₯νμΈμ. μ νΈλ¦¬ν° μ μμ κ°μ μ§μ νλμ½λ©νλ κ²μ νΌνμΈμ.
- μ κ·Όμ±μ κ³ λ €νμΈμ: 컀μ€ν μ νΈλ¦¬ν°λ₯Ό λ§λ€ λ μ κ·Όμ±μ μΌλμ λμΈμ. μ νΈλ¦¬ν°κ° λΆμΆ©λΆν μμ λλΉλ 보기 μ΄λ €μ΄ ν¬μ»€μ€ μνμ κ°μ μ κ·Όμ± λ¬Έμ λ₯Ό μΌμΌν€μ§ μλλ‘ νμΈμ.
- 볡μ‘ν λ‘μ§μλ νλ¬κ·ΈμΈμ μ¬μ©νμΈμ: λ 볡μ‘ν μ νΈλ¦¬ν° μμ± λ‘μ§μ κ²½μ°,
@tailwindcss/plugin
μ μ¬μ©νμ¬ μ»€μ€ν Tailwind νλ¬κ·ΈμΈμ λ§λλ κ²μ κ³ λ €νμΈμ. μ΄λ μ€μ νμΌμ κΉ¨λνκ³ μ²΄κ³μ μΌλ‘ μ μ§νλ λ° λμμ΄ λ©λλ€. - 컀μ€ν μ νΈλ¦¬ν°λ₯Ό λ¬ΈμννμΈμ: νμμ μμ νλ κ²½μ°, λ€λ₯Έ κ°λ°μλ€μ΄ μ νΈλ¦¬ν°μ λͺ©μ κ³Ό μ¬μ© λ°©λ²μ μ΄ν΄ν μ μλλ‘ μ»€μ€ν μ νΈλ¦¬ν°λ₯Ό λ¬ΈμννμΈμ.
Functions APIλ‘ λμμΈ μμ€ν ꡬμΆνκΈ°
Functions APIλ κ²¬κ³ νκ³ μ μ§λ³΄μ κ°λ₯ν λμμΈ μμ€ν μ λ§λλ λ° μ€μν μν μ ν©λλ€. λμμΈ ν ν°(μμ, νμ΄ν¬κ·ΈλνΌ, κ°κ²©)μ ν λ§ μ€μ μ μ μν λ€μ Functions APIλ₯Ό μ¬μ©νμ¬ ν΄λΉ ν ν°μ κΈ°λ°μΌλ‘ μ νΈλ¦¬ν°λ₯Ό μμ±ν¨μΌλ‘μ¨ μΌκ΄μ±μ 보μ₯νκ³ λμμΈ μΈμ΄μ λν λ¨μΌ μ§μ€ 곡κΈμ(single source of truth)μ λ§λ€ μ μμ΅λλ€. μ΄ μ κ·Ό λ°©μμ ν λ§ μ€μ λ³κ²½μ΄ ν΄λΉ κ°μ μ¬μ©νλ λͺ¨λ μ νΈλ¦¬ν°μ μλμΌλ‘ μ νλλ―λ‘ ν₯ν λμμΈ μμ€ν μ λ μ½κ² μ λ°μ΄νΈν μ μκ² ν©λλ€.
νΉμ κ°κ²© μ¦κ°λΆμ κ°μ§ λμμΈ μμ€ν μ μμν΄λ³΄μΈμ. μ΄λ₯Ό `tailwind.config.js`μ μ μν λ€μ ν΄λΉ κ°μ κΈ°λ°μΌλ‘ λ§μ§, ν¨λ©, λλΉμ λν μ νΈλ¦¬ν°λ₯Ό μμ±ν μ μμ΅λλ€. λ§μ°¬κ°μ§λ‘, μμ νλ νΈλ₯Ό μ μνκ³ λ°°κ²½μ, ν μ€νΈ μμ, ν λ리 μμμ λν μ νΈλ¦¬ν°λ₯Ό μμ±ν μ μμ΅λλ€.
κΈ°λ³Έμ λμ΄: κ³ κΈ κΈ°μ
Functions APIλ λ€μκ³Ό κ°μ λ κ³ κΈ κΈ°μ μ λ¬Έμ μ½λλ€:
- λ°μ΄ν° κΈ°λ° λμ μ νΈλ¦¬ν° μμ±: μΈλΆ μμ€(μ: API)μμ λ°μ΄ν°λ₯Ό κ°μ Έμ λΉλ μμ ν΄λΉ λ°μ΄ν°λ₯Ό μ¬μ©νμ¬ μ»€μ€ν μ νΈλ¦¬ν°λ₯Ό μμ±ν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ νΉμ μ½ν μΈ λ λ°μ΄ν°μ λ§μΆ€νλ μ νΈλ¦¬ν°λ₯Ό λ§λ€ μ μμ΅λλ€.
- μλ°μ€ν¬λ¦½νΈ λ‘μ§ κΈ°λ° μ»€μ€ν λ³ν μμ±: μλ°μ€ν¬λ¦½νΈ λ‘μ§μ μ¬μ©νμ¬ μ¬λ¬ 쑰건μ κΈ°λ°ν 볡μ‘ν λ³νμ μ μν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ λ§€μ° λ°μμ μ΄κ³ μ μλ ₯μ΄ λ°μ΄λ μ νΈλ¦¬ν°λ₯Ό λ§λ€ μ μμ΅λλ€.
- λ€λ₯Έ λꡬ λ° λΌμ΄λΈλ¬λ¦¬μμ ν΅ν©: Functions APIλ₯Ό λ€λ₯Έ λꡬ λ° λΌμ΄λΈλ¬λ¦¬μ ν΅ν©νμ¬ μ»€μ€ν μν¬νλ‘μ°λ₯Ό λ§λ€κ³ μμ μ μλνν μ μμ΅λλ€. μλ₯Ό λ€μ΄, μ½λ μμ±κΈ°λ₯Ό μ¬μ©νμ¬ λμμΈ μ¬μμ λ°λΌ Tailwind μ νΈλ¦¬ν°λ₯Ό μλμΌλ‘ μμ±ν μ μμ΅λλ€.
μΌλ°μ μΈ ν¨μ κ³Ό νΌνλ λ°©λ²
- κ³Όλν ꡬ체μ±: λ무 ꡬ체μ μΈ μ νΈλ¦¬ν°λ₯Ό λ§λ€μ§ λ§μΈμ. μ¬λ¬ 컨ν μ€νΈμμ μ μ©ν μ μλ μ¬μ¬μ© κ°λ₯ν μ νΈλ¦¬ν°λ₯Ό λͺ©νλ‘ νμΈμ.
- μ±λ₯ λ¬Έμ : λ§μ μμ μ νΈλ¦¬ν°λ₯Ό μμ±νλ©΄ λΉλ μ±λ₯μ μν₯μ μ€ μ μμ΅λλ€. μμ±νλ μ νΈλ¦¬ν° μλ₯Ό μΌλμ λκ³ κ°λ₯ν κ²½μ° μ½λλ₯Ό μ΅μ ννμΈμ.
- μ€μ μΆ©λ: 컀μ€ν μ νΈλ¦¬ν°κ° Tailwindμ κΈ°λ³Έ μ νΈλ¦¬ν°λ λ€λ₯Έ νλ¬κ·ΈμΈμ μ νΈλ¦¬ν°μ μΆ©λνμ§ μλλ‘ νμΈμ. μΆ©λμ νΌνκΈ° μν΄ κ³ μ ν μ λμ¬λ λ€μμ€νμ΄μ€λ₯Ό μ¬μ©νμΈμ.
- Purge νλ‘μΈμ€ 무μ: 컀μ€ν μ νΈλ¦¬ν°λ₯Ό μΆκ°ν λ νλ‘λμ μμ μ λλ‘ μ κ±°(purge)λλλ‘ νμΈμ. `tailwind.config.js`μμ `purge` μ€μ μ ꡬμ±νμ¬ μ΄λ¬ν μ νΈλ¦¬ν°κ° μ¬μ©λλ λͺ¨λ νμΌμ ν¬ν¨μν€μΈμ.
Tailwind CSSμ Functions APIμ λ―Έλ
Tailwind CSS μνκ³λ λμμμ΄ μ§ννκ³ μμΌλ©°, Functions APIλ λ―Έλμ μ μ λ μ€μν μν μ ν κ°λ₯μ±μ΄ λμ΅λλ€. Tailwind CSSμ μΈκΈ°κ° κ³μ λμμ§μ λ°λΌ μ¬μ©μ μ μ λ° νμ₯μ±μ λν μꡬλ λμ± μ»€μ§ κ²μ λλ€. Functions APIλ μ΄λ¬ν μꡬλ₯Ό μΆ©μ‘±μν€λ λ° νμν λꡬλ₯Ό μ 곡νμ¬ κ°λ°μκ° μ§μ μΌλ‘ λ μ°½μ μ΄κ³ λ§μΆ€νλ μ€νμΌλ§ μ루μ μ λ§λ€ μ μλλ‘ ν©λλ€.
ν₯ν Tailwind CSS λ²μ μμλ Functions APIμ λν μΆκ°μ μΈ κ°μ μ κΈ°λν μ μμΌλ©°, μ΄λ λμ± κ°λ ₯νκ³ μ μ°ν΄μ§ κ²μ λλ€. μ¬κΈ°μλ ν λ§ μ€μ μ μ‘°μνκ³ , λ 볡μ‘ν CSS κ·μΉμ μμ±νλ©°, λ€λ₯Έ λꡬ λ° λΌμ΄λΈλ¬λ¦¬μ ν΅ν©νκΈ° μν μλ‘μ΄ ν¨μκ° ν¬ν¨λ μ μμ΅λλ€.
κ²°λ‘
Tailwind CSS Functions APIλ Tailwind κΈ°μ μ ν λ¨κ³ λμ΄μ¬λ¦¬κ³ μ νλ νλ‘ νΈμλ κ°λ°μμκ² κ²μ 체μΈμ μ λλ€. Functions APIλ₯Ό μ΄ν΄νκ³ νμ©ν¨μΌλ‘μ¨ μ»€μ€ν μ νΈλ¦¬ν° ν΄λμ€λ₯Ό λ§λ€κ³ , κΈ°μ‘΄ ν λ§λ₯Ό νμ₯νλ©°, λ³νμ μμ±νκ³ , κ°λ ₯ν λμμΈ μμ€ν μ ꡬμΆν μ μμ΅λλ€. μ΄λ Tailwind CSSλ₯Ό νΉμ νλ‘μ νΈ μꡬμ λ§κ² μ‘°μ νκ³ μ§μ μΌλ‘ λ μ°½μ μ΄κ³ μκ°μ μΌλ‘ λ§€λ ₯μ μΈ μ¬μ©μ μΈν°νμ΄μ€λ₯Ό λ§λ€ μ μλ νμ λΆμ¬ν©λλ€. Functions APIμ νμ λ°μλ€μ¬ Tailwind CSSμ μ μ¬λ ₯μ μ΅λν λ°ννμΈμ.
μλ ¨λ Tailwind CSS μ¬μ©μμ΄λ μ΄μ λ§ μμνλ μ¬λμ΄λ , Functions APIλ λ ν¨μ¨μ μ΄κ³ μ μ§λ³΄μ κ°λ₯νλ©° μκ°μ μΌλ‘ λ©μ§ μΉ μ ν리μΌμ΄μ μ λ§λλ λ° λμμ΄ λ μ μλ κ·μ€ν λꡬμ λλ€. κ·Έλ¬λ λ°μ΄λ€μ΄ μ€ννκ³ Functions APIκ° μ 곡νλ 무νν κ°λ₯μ±μ λ°κ²¬νμΈμ.